package object;

/**
 * 构造器练习
 */
public class ConstructorExercise {

    public static void main(String[] args) {

        /*
            定义一个man类，添加两个构造器
            1)第一个无参构造：利用构造器设置所有人的age属性初始值都为18
            2)第二个带pName和pAge两个参数的构造器：使得每次创建man对象的同时初始化对象的name属性和age属性
              分别使用不同的构造器，创建对象
         */

        Man man = new Man();
        System.out.println("man的信息 name=" + man.name + " age=" + man.age);//name null age 18

        Man man1 = new Man("john", 50);
        System.out.println("man1的信息 name=" + man1.name + " age=" + man1.age);//name john age 18

        /*
            对象创建的流程
            1)加载类信息(xxx.class)，只会加载一次
            2)在堆中分配空间(地址)
            3)完成对象初始化
                1.默认初始化 name = null age = 0
                2.显式初始化 name = null age = 18
                3.构造器初始化 name = john age = 18
            4)
         */
    }
}

class Man {

    String name;

    int age;

    public Man() {
        age = 18;
    }

    public Man(String pName, int pAge) {
        name = pName;
        age = pAge;
    }

}